package cn.lg.soar.system.auth.service;

import cn.lg.soar.common.data.dict.DictItem;
import cn.lg.soar.system.auth.entity.AccountBind;
import cn.lg.soar.system.auth.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * AccountBind服务层接口
 * 租户
 * @author luguoxiang
 * @since 2022-04-30
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
public interface IAccountBindService extends IService<AccountBind> {


    /**
     * 根据账号获取用户id
     * @param accountType
     * @param account
     * @return
     */
    Long getUserId(int accountType, String account);

    /**
     * 根据账号获取用户
     * @param accountType
     * @param account
     * @return
     */
    User getUser(int accountType, String account);

    /**
     * 绑定账号
     * @param accountType 账号类型
     * @param account 账号
     * @param userId 绑定用户
     */
    void binding(int accountType, String account, long userId);

    /**
     * 解绑账号
     * @param accountType
     * @param account
     * @param userId
     */
    void unbind(int accountType, String account, long userId);

    /**
     * 更新账号登录信息
     * @param userId
     * @param accountType
     * @param account
     */
    boolean updateLoginInfo(long userId, int accountType, String account);

    List<DictItem<Integer>> types();

    String getTypeLabel(int accountType);

    List<AccountBind> listByUserId(Long userId);

}
